﻿using System;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;

namespace Ausy.Silverlight.Survey.QuestionModule.Model
{
    /// <summary>
    /// Cette classe représente un questionnaire remplit par un utilisateur
    /// </summary>
    [DataContract]
    public class UserQuestionnaire
    {
        #region Identifier Property

        /// <summary>
        /// Identifiant de cette réponse au questionnaire
        /// </summary>
        [DataMember]
        public Guid Identifier { get; set; }

        #endregion

        #region QuestionnaireReferenceID Property

        /// <summary>
        /// Identifiant du questionnaire remplit
        /// </summary>
        [DataMember]
        public Guid QuestionnaireReferenceID { get; set; }

        #endregion

        #region AccountReferenceID Property

        /// <summary>
        /// Identifiant du Compte utilisareur qui a remplit le questionnaire
        /// </summary>
        [DataMember]
        public Guid AccountReferenceID { get; set; }

        #endregion

        #region QuestionnaireResponseCollection Property

        /// <summary>
        /// Property QuestionnaireResponseCollection
        /// </summary>
        private Collection<UserQuestionnaireResponse> questionnaireResponseCollection;

        /// <summary>
        /// Property QuestionnaireResponseCollection
        /// </summary>
        [DataMember]
        public Collection<UserQuestionnaireResponse> QuestionnaireResponseCollection
        {
            get { return this.questionnaireResponseCollection; }
            private set { this.questionnaireResponseCollection = value; }
        }
        #endregion

        #region QuestionnaireResult Property

        /// <summary>
        /// Resultat du questionnaire
        /// </summary>
        [DataMember]
        public Decimal QuestionnaireResult { get; set; }

        #endregion

        #region TimeSpanComplete Property

        /// <summary>
        /// Temps passé à répondre à l'ensemble des questions
        /// </summary>
        [DataMember]
        public TimeSpan TimeSpanComplete { get; set; }

        #endregion

        #region Constructor

        /// <summary>
        /// Constructeur par défaut
        /// </summary>
        public UserQuestionnaire()
        {
            this.Identifier = Guid.NewGuid();
            this.AccountReferenceID = Guid.Empty;
            this.QuestionnaireReferenceID = Guid.Empty;
            this.QuestionnaireResponseCollection = new Collection<UserQuestionnaireResponse>();
            this.QuestionnaireResult = 0;
            this.TimeSpanComplete = new TimeSpan();
        }

        #endregion

    }
}
